package edu.hm.swe2.shareit.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;

import edu.hm.swe2.shareit.domain.Benutzer;


public class BenutzerDAO 
{
	private EntityManager emgr = Persistence
			.createEntityManagerFactory("ShareItJPA").createEntityManager();

	public final void create(Benutzer benutzer) 
	{
		emgr.getTransaction().begin();
		emgr.persist(benutzer);
		emgr.getTransaction().commit();
	}

	public Benutzer read(int id) {
		return emgr.find(Benutzer.class, id);
	}


	public final Benutzer findByLogin(String login)
	{
		emgr.getTransaction().begin();

		TypedQuery<Benutzer> tq = emgr.createQuery(
				"select object(l) from Benutzer l where l.login =?1",
				Benutzer.class);
		tq.setParameter(1, login);

		List<Benutzer> result = tq.getResultList();

		emgr.getTransaction().commit();

		if (result.isEmpty())
		{
			return null;
		} else
		{
			return result.get(0);
		}
	}
	

	public final void update(Benutzer benutzer) 

	{
		emgr.getTransaction().begin();
		emgr.merge(benutzer);
		emgr.getTransaction().commit();
	}

	public final void delete(Benutzer benutzer) 
	{
		emgr.getTransaction().begin();
		benutzer = emgr.merge(benutzer);
		emgr.remove(benutzer);
		emgr.getTransaction().commit();
	}

}
